#include <stdio.h>
#include <stdlib.h> //biblioteca que chama o system("cls");
#include <conio.h>

/*
    Função que desenha o menu quando solicitado
    e retorna o valor da opção escolhida pelo usuário
*/
int desenhaMenu()
{
    int opcao;

    system("cls"); // limpa a tela
    printf("****************************** |MENU| ******************************\n");
    printf(" 1) Calcular meu IMC e minha classificacao segundo a OMS\n");
    printf(" 2) Calcular o intervalo de peso normal para a minha altura\n");
    printf(" 3) Calcular peso atraves do IMC e da altura\n");
    printf(" 4) Sair..\n");
    printf(" Opcao: ");
    scanf ("%d", &opcao);

    return opcao; // retorna a opção
}


int main(void)
{

    // Declaração das variáveis
    int opcao;
    float altura,peso,imc, normalMin, normalMax, imcAux, altAux, pesoAux;
    char *classificacao, *risco;
    // Solicitação da entrada de valores ao usuário, e leitura do telado
    printf("****************************** |CALCULO DE IMC| ******************************\n");
    printf("Digite sua altura: ");
    scanf("%f",&altura);
    printf("\n");
    printf("Digite seu peso: ");
    scanf("%f",&peso);
    printf("\n");

    // Cálcuo do IMC segundo fórmula fornecida
    imc = peso/(altura*altura);

    // Calcula o intervalo de peso normal para a pessoa de determinada altura
    normalMin = altura*altura*18.5;
    normalMax = altura*altura*25;


while(opcao != 4)
{
    opcao = desenhaMenu();
    switch (opcao)
    {
    case 1:    //Cálculo do estado da pessoa de acordo com seu IMC
        system("cls");
        if (imc < 18.5)
{
            classificacao = "Abaixo do peso.";
            risco = "Muito alto.";
        }
        else
            if (imc >= 18.5 && imc < 25)
            {
                classificacao = "Peso normal.";
                risco = "Baixo.";
            }
            else
                if (imc >= 25 && imc < 30)
                {
                    classificacao = "Pre obesidade.";
                    risco = "Medio.";
                }
                else
                    if (imc >= 30 && imc < 35)
                    {
                        classificacao = "Obesidade Grau 1.";
                        risco = "Alto.";
                    }
                    else
                        if (imc >= 35 && imc < 40)
                        {
                            classificacao = "Obesidade Grau 2.";
                            risco = "Muito alto.";
                        }
                        else
                            if (imc >=40)
                            {
                                classificacao = "Obsidade grau 3.";
                                risco = "Muitissimo alto.";
                            }
        //Informa ao usuário seu IMC, Classificação e Risco de Saúde
        printf("Seu IMC: %f\n",imc);
        printf("Classificacao:  %s\n",classificacao);
        printf("Risco de saude: %s\n",risco);
        printf("\nPressione qualquer tecla para voltar ao menu principal.");
        _getch();
        break;

    case 2:
        system("cls");
        printf("O peso ideal para sua altura esta entre %f e %f\n", normalMin, normalMax);
        printf("\nPressione qualquer tecla para voltar ao menu principal.");
        _getch();
        break;

    case 3:
        system("cls");
        printf("A titulo de curiosidade, informe um IMC e uma altura para saber o peso da pessoa em questao:\n");
        printf("IMC: ");
        scanf ("%f",&imcAux);
        printf("\n");
        printf("Altura: ");
        scanf ("%f",&altAux );
        printf("\n");
        pesoAux = altAux*altAux*imcAux; // Calculo do peso
        printf("O peso correspondente a esse IMC e essa altura e: %f\n\nPressione qualquer tecla para voltar ao menu principal.\n", pesoAux);
        _getch();
        break;

    }
}
    return 0;
}
